Capítulo 3 Camada de transporte - FACOMfaina/BCC_Crs/GBC066-2014-2S/DL/Kurose-Ch03.pdf · slides...

105
© 2010 Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 3 Camada de transporte Nota sobre o uso destes slides ppt: Estamos disponibilizando estes slides gratuitamente a todos (professores, alunos, leitores). Eles estão em formato do PowerPoint para que você possa incluir, modificar e excluir slides (incluindo este) e o conteúdo do slide, de acordo com suas necessidades. Eles obviamente representam muito trabalho da nossa parte. Em retorno pelo uso, pedimos apenas o seguinte: Se você usar estes slides (por exemplo, em sala de aula) sem muita alteração, que mencione sua fonte (afinal, gostamos que as pessoas usem nosso livro!). Se você postar quaisquer slides sem muita alteração em um site Web, que informe que eles foram adaptados dos (ou talvez idênticos aos) nossos slides, e inclua nossa nota de direito autoral desse material. Obrigado e divirta-se! JFK/KWR Todo o material copyright 1996-2009 J. F Kurose e K. W. Ross, Todos os direitos reservados . © 2010 Pearson Prentice Hall. Todos os direitos reservados. slide 1

Transcript of Capítulo 3 Camada de transporte - FACOMfaina/BCC_Crs/GBC066-2014-2S/DL/Kurose-Ch03.pdf · slides...

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 1

Capiacutetulo 3 Camada de transporte

Nota sobre o uso destes slides ppt

Estamos disponibilizando estes slides gratuitamente a todos(professores alunos leitores) Eles estatildeo em formato do PowerPoint para que vocecirc possa incluir modificar e excluir slides (incluindo este) e o conteuacutedo do slide de acordo com suas necessidades Eles obviamente representam muito trabalho da nossa parte Em retorno pelo uso pedimos apenas o seguinte Se vocecirc usar estes slides (por exemplo em sala de aula) sem muita alteraccedilatildeo que mencione sua fonte (afinal gostamos que as pessoas usem nosso livro)Se vocecirc postar quaisquer slides sem muita alteraccedilatildeo em um site Web que informe que eles foram adaptados dos (ou talvez idecircnticos aos) nossos slides e inclua nossa nota de direito autoral desse material

Obrigado e divirta-se JFKKWR

Todo o material copyright 1996-2009J F Kurose e K W Ross Todos os direitos reservados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 2

Capiacutetulo 3 Camada de transporteObjetivos do capiacutetulo entender princiacutepios

por traacutes dos serviccedilos da camada de transporte multiplexaccedilatildeodemul-

tiplexaccedilatildeo transferecircncia de

dados confiaacutevel controle de fluxo controle de

congestionamento

aprender sobre os protocolos da camada de transporte na Internet UDP transporte sem

conexatildeo TCP transporte orientado a

conexatildeo controle de

congestionamento TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 3

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 4

Serviccedilos e protocolos de transporte oferecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo rodando em hospedeiros diferentes

protocolos de transporte rodam em sistemas finais lado remetente divide as msgs

da aplicaccedilatildeo em segmentos passa agrave camada de rede

lado destinataacuterio remonta os segmentos em msgs passa agrave camada de aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel agraves aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

transporte loacutegico fim a fim

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 5

Camada de transporte versus rede camada de rede

comunicaccedilatildeo loacutegica entre hospedeiros

camada de transporte comunicaccedilatildeo loacutegica entre processos conta com e amplia os

serviccedilos da camada de rede

analogia com a famiacutelia12 crianccedilas mandando

carta a 12 crianccedilas processos = crianccedilas msgs da aplicaccedilatildeo =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Ana e Bill protocolo da camada de

rede = serviccedilo postal

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 6

redeenlacefiacutesica

redeenlacefiacutesica

Protocolos da camada de transporte da Internet

remessa confiaacutevel e em ordem (TCP) controle de congestionamento controle de fluxo estabelecimento da conexatildeo

remessa natildeo confiaacutevel e desordenada UDP extensatildeo sem luxo do IP pelo

ldquomelhor esforccedilordquo serviccedilos natildeo disponiacuteveis

garantias de atraso garantias de largura de banda

aplicaccedilatildeotransporte

redeenlacefiacutesica

networkdata linkphysical

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica rede

enlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

logical end-end transport

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 2

Capiacutetulo 3 Camada de transporteObjetivos do capiacutetulo entender princiacutepios

por traacutes dos serviccedilos da camada de transporte multiplexaccedilatildeodemul-

tiplexaccedilatildeo transferecircncia de

dados confiaacutevel controle de fluxo controle de

congestionamento

aprender sobre os protocolos da camada de transporte na Internet UDP transporte sem

conexatildeo TCP transporte orientado a

conexatildeo controle de

congestionamento TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 3

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 4

Serviccedilos e protocolos de transporte oferecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo rodando em hospedeiros diferentes

protocolos de transporte rodam em sistemas finais lado remetente divide as msgs

da aplicaccedilatildeo em segmentos passa agrave camada de rede

lado destinataacuterio remonta os segmentos em msgs passa agrave camada de aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel agraves aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

transporte loacutegico fim a fim

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 5

Camada de transporte versus rede camada de rede

comunicaccedilatildeo loacutegica entre hospedeiros

camada de transporte comunicaccedilatildeo loacutegica entre processos conta com e amplia os

serviccedilos da camada de rede

analogia com a famiacutelia12 crianccedilas mandando

carta a 12 crianccedilas processos = crianccedilas msgs da aplicaccedilatildeo =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Ana e Bill protocolo da camada de

rede = serviccedilo postal

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 6

redeenlacefiacutesica

redeenlacefiacutesica

Protocolos da camada de transporte da Internet

remessa confiaacutevel e em ordem (TCP) controle de congestionamento controle de fluxo estabelecimento da conexatildeo

remessa natildeo confiaacutevel e desordenada UDP extensatildeo sem luxo do IP pelo

ldquomelhor esforccedilordquo serviccedilos natildeo disponiacuteveis

garantias de atraso garantias de largura de banda

aplicaccedilatildeotransporte

redeenlacefiacutesica

networkdata linkphysical

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica rede

enlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

logical end-end transport

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 3

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 4

Serviccedilos e protocolos de transporte oferecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo rodando em hospedeiros diferentes

protocolos de transporte rodam em sistemas finais lado remetente divide as msgs

da aplicaccedilatildeo em segmentos passa agrave camada de rede

lado destinataacuterio remonta os segmentos em msgs passa agrave camada de aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel agraves aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

transporte loacutegico fim a fim

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 5

Camada de transporte versus rede camada de rede

comunicaccedilatildeo loacutegica entre hospedeiros

camada de transporte comunicaccedilatildeo loacutegica entre processos conta com e amplia os

serviccedilos da camada de rede

analogia com a famiacutelia12 crianccedilas mandando

carta a 12 crianccedilas processos = crianccedilas msgs da aplicaccedilatildeo =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Ana e Bill protocolo da camada de

rede = serviccedilo postal

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 6

redeenlacefiacutesica

redeenlacefiacutesica

Protocolos da camada de transporte da Internet

remessa confiaacutevel e em ordem (TCP) controle de congestionamento controle de fluxo estabelecimento da conexatildeo

remessa natildeo confiaacutevel e desordenada UDP extensatildeo sem luxo do IP pelo

ldquomelhor esforccedilordquo serviccedilos natildeo disponiacuteveis

garantias de atraso garantias de largura de banda

aplicaccedilatildeotransporte

redeenlacefiacutesica

networkdata linkphysical

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica rede

enlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

logical end-end transport

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 4

Serviccedilos e protocolos de transporte oferecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo rodando em hospedeiros diferentes

protocolos de transporte rodam em sistemas finais lado remetente divide as msgs

da aplicaccedilatildeo em segmentos passa agrave camada de rede

lado destinataacuterio remonta os segmentos em msgs passa agrave camada de aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel agraves aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

transporte loacutegico fim a fim

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 5

Camada de transporte versus rede camada de rede

comunicaccedilatildeo loacutegica entre hospedeiros

camada de transporte comunicaccedilatildeo loacutegica entre processos conta com e amplia os

serviccedilos da camada de rede

analogia com a famiacutelia12 crianccedilas mandando

carta a 12 crianccedilas processos = crianccedilas msgs da aplicaccedilatildeo =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Ana e Bill protocolo da camada de

rede = serviccedilo postal

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 6

redeenlacefiacutesica

redeenlacefiacutesica

Protocolos da camada de transporte da Internet

remessa confiaacutevel e em ordem (TCP) controle de congestionamento controle de fluxo estabelecimento da conexatildeo

remessa natildeo confiaacutevel e desordenada UDP extensatildeo sem luxo do IP pelo

ldquomelhor esforccedilordquo serviccedilos natildeo disponiacuteveis

garantias de atraso garantias de largura de banda

aplicaccedilatildeotransporte

redeenlacefiacutesica

networkdata linkphysical

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica rede

enlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

logical end-end transport

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 5

Camada de transporte versus rede camada de rede

comunicaccedilatildeo loacutegica entre hospedeiros

camada de transporte comunicaccedilatildeo loacutegica entre processos conta com e amplia os

serviccedilos da camada de rede

analogia com a famiacutelia12 crianccedilas mandando

carta a 12 crianccedilas processos = crianccedilas msgs da aplicaccedilatildeo =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Ana e Bill protocolo da camada de

rede = serviccedilo postal

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 6

redeenlacefiacutesica

redeenlacefiacutesica

Protocolos da camada de transporte da Internet

remessa confiaacutevel e em ordem (TCP) controle de congestionamento controle de fluxo estabelecimento da conexatildeo

remessa natildeo confiaacutevel e desordenada UDP extensatildeo sem luxo do IP pelo

ldquomelhor esforccedilordquo serviccedilos natildeo disponiacuteveis

garantias de atraso garantias de largura de banda

aplicaccedilatildeotransporte

redeenlacefiacutesica

networkdata linkphysical

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica rede

enlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

logical end-end transport

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 6

redeenlacefiacutesica

redeenlacefiacutesica

Protocolos da camada de transporte da Internet

remessa confiaacutevel e em ordem (TCP) controle de congestionamento controle de fluxo estabelecimento da conexatildeo

remessa natildeo confiaacutevel e desordenada UDP extensatildeo sem luxo do IP pelo

ldquomelhor esforccedilordquo serviccedilos natildeo disponiacuteveis

garantias de atraso garantias de largura de banda

aplicaccedilatildeotransporte

redeenlacefiacutesica

networkdata linkphysical

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica rede

enlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

logical end-end transport

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 7

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

hospedeiro 1 hospedeiro 2 hospedeiro 3

= processo = socket

entregando segmentosrecebidos ao socket correto

demultiplexaccedilatildeo no destinataacuteriocolhendo dados de muacuteltiplossockets envelopando dadoscom cabeccedilalho (usados depoispara demultiplexaccedilatildeo)

multiplexaccedilatildeo no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 9

Como funciona a demultiplexaccedilatildeo hospedeiro recebe

datagramas IP cada datagrama tem

endereccedilo IP de origem endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento tem nuacutemero de porta de origem destino

hospedeiro usa endereccedilos IP amp nuacutemeros de porta para direcionar segmento ao socket apropriado

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos de cabeccedilalho

formato do segmento TCPUDP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 10

Demultiplexaccedilatildeo natildeo orientada para conexatildeo cria sockets com nuacutemeros

de portaDatagramSocket mySocket1 = new

DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

socket UDP identificado por tupla de dois elementos

(endereccedilo IP destino nuacutemero porta destino)

quando hospedeiro recebe segmento UDP verifica nuacutemero de porta

de destino no segmento direciona segmento UDP

para socket com esse nuacutemero de porta

datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 11

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

cliente IP A

P1P1P3

servidorIP C

SP 6428DP 9157

SP 9157DP 6428

SP 6428DP 5775

SP 5775DP 6428

SP oferece ldquoendereccedilo de retornordquo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 12

Demultiplexaccedilatildeo orientada para conexatildeo

socket TCP identificado por tupla de 4 elementos endereccedilo IP de origem nuacutemero de porta de origem endereccedilo IP de destino nuacutemero de porta de destino

hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado

hospedeiro servidor pode admitir muitos sockets TCP simultacircneos cada socket identificado

por usa proacutepria tupla de 4 servidores Web tecircm

diferentes sockets para cada cliente conectando HTTP natildeo persistente teraacute

diferentes sockets para cada requisiccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 13

ServidorIPB

P1

cliente IP A

P1P2P4

ClienteIP C

SP 26145 DP 80 SP 7532 DP 80

P5 P6 P3

D-IP BS-IP A D-IP BS-IP C

SP 26145DP 80

D-IP BS-IP C

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 14

Demultiplexaccedilatildeo orientadapara conexatildeo servidor Web threaded

servidor distingue os segmentos dos diferentes clientes pelos endereccedilos IP e pelos nuacutemeros de porta da fonte

hellip contudo nem sempre existe uma correspondecircncia uniacutevoca entre sockets de conexatildeo e processo

hellip assim servidores de alto desempenho utilizam somente um processo mas criam uma nova thread com um novo socket de conexatildeo para nova conexatildeo cliente

Qual a influecircncia se a conexatildeo for HTTP Persistente ou Natildeo Persistente neste cenaacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 15

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 16

UDP User Datagram Protocol [RFC 768]

protocolo de transporte da Internet ldquosem luxordquo baacutesico

serviccedilo de ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora da ordem sem conexatildeo

sem handshaking entre remetente e destinataacuterio UDP

cada segmento UDP tratado independente dos outros

Por que existe um UDP sem estabelecimento de

conexatildeo (que pode gerar atraso)

simples sem estado de conexatildeo no remetente destinataacuterio

cabeccedilalho de segmento pequeno

sem controle de congestionamento UDP pode transmitir o mais raacutepido possiacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 17

UDP mais normalmente usado para

streaming de aplicaccedilotildees de multimiacutedia tolerante a perdas sensiacutevel agrave taxa

outros usos do UDP DNS SNMP

transferecircncia confiaacutevel por UDP aumenta confiabilidade na camada de aplicaccedilatildeo recuperaccedilatildeo de erro

especiacutefica da aplicaccedilatildeo

porta origem porta dest

32 bits

dados daaplicaccedilatildeo

(mensagem)

formato de segmento UDP

tamanho soma veriftamanho

em bytes dosegmento UDP

incluindocabeccedilalho

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 18

Soma de verificaccedilatildeo UDP

remetente trata conteuacutedo de

segmento como sequecircncia de inteiros de 16 bits

soma de verificaccedilatildeo (checksum) adiccedilatildeo (soma por complemento de 1) do conteuacutedo do segmento

remetente coloca valor da soma de verificaccedilatildeo no campo de soma de verificaccedilatildeo UDP

destinataacuterio calcula soma de verificaccedilatildeo do

segmento recebido verifica se soma de verificaccedilatildeo

calculada igual ao valor do campo de soma de verificaccedilatildeo NAtildeO ndash erro detectado SIM ndash nenhum erro

detectado Mas pode haver erros mesmo assim Veja mais adiante hellip

objetivo detectar ldquoerrosrdquo (p e bits invertidos) no segmento transmitido

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 19

Exemplo de soma de verificaccedilatildeo da Internet

notaAo somar nuacutemeros um carryout do bit mais

significativo precisa ser somado ao resultado exemplo somar 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

contorna

somasoma de

verificaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 20

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 21

Princiacutepios de transferecircncia confiaacutevel de dados

importante nas camadas de aplicaccedilatildeo transporte e enlace lista dos 10 mais importantes toacutepicos de redes caracteriacutesticas do canal confiaacutevel determinaratildeo

complexidade do protocolo de transferecircncia confiaacutevel (rdt)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 22

Transferecircncia confiaacutevel de dados introduccedilatildeo

ladoremetente

ladodestinataacuterio

rdt_send() chamado de cima (p e pela apl) Dados passados para remeter

agrave camada superior do destinataacuterio

udt_send() chamado pela rdt para transferir pacote por canal natildeo confiaacutevel ao destinataacuterio

rdt_rcv() chamado quando pacote chega no lado destinataacuterio do canal

deliver_data() chamado pela rdt para remeter dados para cima

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 23

vamos desenvolver de forma incremental os lados remetente e

destinataacuterio do protocolo de transferecircncia confiaacutevel de dados (rdt)

considerar apenas a transf de dados unidirecional mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees

usar maacutequinas de estado finito (FSM) para especificar remetente destinataacuterio

estado1

estado2

evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado

estado quando neste ldquoestadordquo proacuteximo

estado determinadoexclusivamente pelo

proacuteximo evento

eventoaccedilotildees

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 24

Rdt10 transferecircncia confiaacutevel por canal confiaacutevel canal subjacente perfeitamente confiaacutevel

sem erros de bit sem perda de pacotes

FSMs separadas para remetente e destinataacuterio remetente envia dados para canal subjacente destinataacuterio lecirc dados do canal subjacente

Esperachamadade cima packet = make_pkt(dados)

udt_send(pacote)

rdt_send(dados)

extract (pacote dados)deliver_data(dados)

Esperachamadade baixo

rdt_rcv(pacote)

remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 25

Rdt20 canal com erros de bit

canal subjacente pode inverter bits no pacote soma de verificaccedilatildeo para detectar erros de bit

a questatildeo como recuperar-se dos erros reconhecimentos (ACKs) destinataacuterio diz explicitamente

ao remetente que o pacote foi recebido OK reconhecimentos negativas (NAKs) destinataacuterio diz

explicitamente ao remetente que o pacote teve erros remetente retransmite pacote ao receber NAK

novos mecanismos no rdt20 (aleacutem do rdt10) detecccedilatildeo de erro feedback do destinataacuterio msgs de controle (ACKNAK)

destinataacuterio-gtremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 26

rdt20 especificaccedilatildeo da FSM

Esperachamadade cima

sndpkt = make_pkt(dados soma_verif)udt_send(sndpkt)

extract(sndpktdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(sndpkt) ampamp notcorrupt(sndpkt)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(sndpkt)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(sndpkt) ampamp corrupt(sndpkt)

EsperaACK ou

NAK

Esperachamadade baixoremetente

destinataacuteriordt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 27

rdt20 operaccedilatildeo sem erros

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 28

rdt20 cenaacuterio de erro

Esperachamadade cima

snkpkt = make_pkt(dados soma_verif)udt_send(pctenv)

extract(pctrecdados)deliver_data(dados)udt_send(ACK)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

rdt_rcv(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp isNAK(pctrec)

udt_send(NAK)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

EsperaACK ou

NAK

Esperachamadade baixo

rdt_send(dados)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 29

rdt20 tem uma falha fatal

O que acontece se ACKNAK for corrompido

remetente natildeo sabe o que aconteceu no destinataacuterio

natildeo pode simplesmente retransmitir possiacutevel duplicaccedilatildeo

tratando de duplicatas remetente retransmite

pacote atual se ACKNAK corrompido

remetente acrescenta nuacutemero de sequecircncia a cada pacote

destinataacuterio descarta (natildeo sobe) pacote duplicado

remetente envia um pacote depois espera resposta dodestinataacuterio

pare e espere

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 30

rdt21 remetente trata de ACKNAKs corrompidos

Esperachamada 0

de cima

pctenv = make_pkt(0 dados checksum)udt_send(pctenv)

rdt_send(dados)

EsperaACK ouNAK 0 udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

pctenv = make_pkt(1 dados checksum)udt_send(pctenv)

rdt_send(dados)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

udt_send(pctenv)

rdt_rcv(pctrec) ampamp ( corrupt(pctrec) ||isNAK(pctrec) )

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp isACK(pctrec)

Esperachamada 1

de cima

EsperaACK ou NAK 1

ΛΛ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 31

Espera0 decima

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq0(pctrec)

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq1(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

Espera1 de baixo

rdt_rcv(pctrec) ampamp notcorrupt(pctrec) ampamp has_seq0(pctrec)

extract(pctrecdados)deliver_data(dados)pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

rdt_rcv(pctrec) ampamp not corrupt(pctrec) ampamp has_seq1(pctrec)

rdt_rcv(pctrec) ampamp (corrupt(pctrec)

pctenv = make_pkt(ACK chksum)udt_send(pctenv)

pctenv = make_pkt(NAK chksum)udt_send(pctenv)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 32

rdt21 discussatildeo

remetente seq acrescentado ao

pkt dois s seq (01)

bastaratildeo Por quecirc deve verificar se

ACKNAK recebido foi corrompido

o dobro de estados estado de ldquolembrarrdquo se

pacote ldquoatualrdquo tem seq 0 ou 1

destinataacuterio deve verificar se

pacote recebido estaacute duplicado estado indica se 0 ou 1 eacute

seq esperado do pacote

nota destinataacuterio natildeo sabe se seu uacuteltimo ACKNAK foi recebido OK no remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 33

rdt22 um protocolo sem NAK

mesma funcionalidade de rdt21 usando apenas ACKs em vez de NAK destinataacuterio envia ACK para uacuteltimo

pacote recebido OK destinataacuterio precisa incluir explicitamente seq do pacote

sendo reconhecido com ACK ACK duplicado no remetente resulta na mesma accedilatildeo

de NAK retransmitir pacote atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 34

rdt22 fragmentos do remetente destinataacuterio

Esperachamada 0 de cima

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)

rdt_send(dados)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

EsperaACK

0

fragmento FSMdo remetente

Esperachamada 1 de cima

Esperachamada 1 de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt0) )

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )

udt_send(sndpkt)rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 35

rdt22 fragmentos do remetente destinataacuterio

Espera0 debaixo

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

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 1 chksum)udt_send(pctenv)

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

if( oncethru==1)udt_send(sndpkt)

fragmento FSMdo destinataacuterio

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

Espera1 debaixo

udt_send(pctenv)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)

extract(rcvpktdados)deliver_data(dados)sndpkt = make_pkt(ACK 0 chksum)udt_send(sndpkt) oncethru = 1

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 36

rdt30 canais com erros e perdanova suposiccedilatildeo canal

subjacente tambeacutem pode perder pacotes (dados ou ACKs) soma de verificaccedilatildeo

seq ACKs retransmissotildees seratildeo uacuteteis mas natildeo suficientes

teacutecnica remetente espera quantidade ldquorazoaacutevelrdquo de tempo por ACK

retransmite se natildeo chegar ACK nesse tempo

se pct (ou ACK) simplesmente atrasado (natildeo perdido) retransmissatildeo seraacute

duplicada mas os s de seq jaacute cuidam disso

destinataacuterio deve especificar seq do pacote sendo reconhecido com ACK

requer contador regressivo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 37

remetente rdt30

sndpkt = make_pkt(0 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

EsperaACK0

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )

Esperachamada 1

de cima

sndpkt = make_pkt(1 dados checksum)udt_send(sndpkt)start_timer

rdt_send(dados)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt 0) )

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(rcvpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Esperachamada 0

de cima

EsperaACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 38

rdt30 em accedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 39

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 40

Desempenho do rdt30 rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso propriedade pacote

8000 bits

U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos

d trans=LR

=8000bits

109 bps=8microssegundos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 41

rdt30 operaccedilatildeo pare e espere

U remet =

0008

30008 = 000027

microseconds

L R RTT + L R

=

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 42

Protocolos com paralelismoparalelismo remetente permite muacuteltiplos pacotes

ldquono arrdquo ainda a serem reconhecidos intervalo de nuacutemeros de sequecircncia deve ser aumentado buffering no remetente eou destinataacuterio

duas formas geneacutericas de protocolo com paralelismo Go-Back-N repeticcedilatildeo seletiva

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 43

Paralelismo utilizaccedilatildeo aumentada

U remet =

0024 30008

= 00008 microseconds

3 L R RTT + L R

=

Aumento de utilizaccedilatildeopor fator de 3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 45

Go-Back-Nremetente

seq de k bits no cabeccedilalho do pacote ldquojanelardquo de ateacute N pcts consecutivos sem ACK permitidos

ACK(n) ACK de todos pcts ateacute inclusive seq n ndash ldquoACK cumulativordquo pode receber ACKs duplicados (ver destinataacuterio)

temporizador para cada pacote no ar timeout(n) retransmite pct n e todos pcts com seq mais alto

na janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 46

GBN FSM estendido no remetente

Esperastart_timerudt_send(pctenv[base])udt_send(pctenv[base+1])hellipudt_send(pctenv[nextseqnum-1])

timeout

rdt_send(dados)

if (nextseqnum lt base+N) pctenv[nextseqnum] = make_pkt(nextseqnumdadoschksum) udt_send(pctenv[nextseqnum]) if (base = = nextseqnum) start_timer nextseqnum++ else refuse_data(dados)

base = getacknum(pctrec)+1If (base = = nextseqnum) stop_timer else start_timer

rdt_rcv(pctrec) ampamp notcorrupt(pctrec)

base = 1nextseqnum = 1

rdt_rcv(pctrec) ampamp corrupt(pctrec)

Λ

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 47

GBN em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 48

Repeticcedilatildeo seletiva

destinataacuterio reconhece individualmente todos os pacotes recebidos de modo correto manteacutem pcts em buffer se for preciso para eventual

remessa em ordem para a camada superior remetente soacute reenvia pcts para os quais o ACK

natildeo foi recebido temporizador no remetente para cada pct sem ACK

janela do remetente N seq consecutivos novamente limita s seq de pcts enviados sem ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 49

Repeticcedilatildeo seletiva janelas de remetente destinataacuterio

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 50

Repeticcedilatildeo seletiva

dados de cima se proacutex seq disponiacutevel

na janela envia pcttimeout(n) reenvia pct n reinicia

temporizadorACK(n) em

[sendbasesendbase+N] marca pct n como recebido se n menor pct com ACK

avanccedila base da janela para proacuteximo seq sem ACK

pct n em [rcvbase rcvbase+N-1] envia ACK(n) fora de ordem buffer em ordem entrega (tambeacutem

entrega pcts em ordem no buffer) avanccedila janela para proacuteximo pct ainda natildeo recebido

pct n em [rcvbase-Nrcvbase-1] ACK(n)caso contraacuterio ignora

destinataacuterioremetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 51

Repeticcedilatildeo seletiva em operaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 52

Repeticcedilatildeo seletivadilema

Exemplo seq 0 1 2 3 tamanho janela = 3 destinataacuterio natildeo vecirc

diferenccedila nos dois cenaacuterios passa incorretamente

dados duplicados como novos em (a)

P Qual o relacionamento entre tamanho do seq e tamanho de janela

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 53

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 54

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

dados full duplex dados bidirecionais fluem

na mesma conexatildeo MSS tamanho maacuteximo do

segmento orientado a conexatildeo

apresentaccedilatildeo (troca de msgs de controle) inicia estado do remetente e destinataacuterio antes da troca de dados

fluxo controlado remetente natildeo

sobrecarrega destinataacuterio

ponto a ponto um remetente um

destinataacuterio cadeia de bytes confiaacutevel em

ordem sem ldquolimites de mensagemrdquo

paralelismo congestionamento TCP e

controle de fluxo definem tamanho da janela

buffers de envio amp recepccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 55

Estrutura do segmento TCP

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero sequecircncianuacutemero reconhecimento

janela recepccedilatildeoponteiro dados urgsoma verificaccedilatildeo

FSRPAUcomprcab

natildeousado

opccedilotildees (tamanho variaacutevel)

URG dados urgentes (quase natildeo usado)

ACK ACKvaacutelido

PSH empurrar dadosagora (quase natildeo usado)

RST SYN FINestab conexatildeo

(comandos setupteardown)

bytes destinataacuteriopode aceitar

contagem porbytes de dados(natildeo segmentos)

soma de verificaccedilatildeoda Internet

(como em UDP)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 56

s sequecircncia e ACKs do TCP

cenaacuterio telnet simples

rsquos de sequecircncia ldquonuacutemerordquo na cadeia de

bytes do 1o byte nos dados do segmento

ACKs seq do proacuteximo byte

esperado do outro lado ACK cumulativo

P como o destinataacuterio trata segmentos fora de ordem R TCP natildeo diz ndash a

criteacuterio do implementador

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 57

Tempo de ida e volta e timeout do TCP

P Como definir o valor de timeout do TCP

maior que RTTmas RTT varia

muito curto timeout prematuro retransmissotildees

desnecessaacuterias muito longo baixa

reaccedilatildeo a perda de segmento

P Como estimar o RTT SampleRTT tempo medido

da transmissatildeo do segmento ateacute receber o ACK ignora retransmissotildees

SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquo meacutedia de vaacuterias mediccedilotildees

recentes natildeo apenas SampleRTT atual

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 58

EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT

meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente raacutepido valor tiacutepico α = 0125

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 59

Amostras de RTTs estimados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 60

definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo

grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de

EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(geralmente β = 025)

depois definir intervalo de timeout

Tempo de ida e volta e timeout do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 61

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 62

Transferecircncia confiaacutevel de dados no TCP TCP cria serviccedilo rdt

em cima do serviccedilo natildeo confiaacutevel do IP

segmentos em paralelo ACKs cumulativos TCP usa uacutenico

temporizador de retransmissatildeo

retransmissotildees satildeo disparadas por eventos de timeout ACKs duplicados

inicialmente considera remetente TCP simplificado ignora ACKs duplicados ignora controle de

fluxo controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 63

Eventos de remetente TCPdados recebidos da apl cria segmento com

seq seq eacute nuacutemero da

cadeia de bytes do primeiro byte de dados no segmento

inicia temporizador se ainda natildeo tiver iniciado (pense nele como para o segmento mais antigo sem ACK)

intervalo de expiraccedilatildeo TimeOutInterval

timeout retransmite segmento

que causou timeout reinicia temporizador ACK recebido Reconhecem-se

segmentos sem ACK anteriores atualiza o que

sabidamente tem ACK inicia temporizador se

houver segmentos pendentes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 64

RemetenteTCP (simplificado) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(dados)

event timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer

end of loop forever

Comentaacuteriobull SendBase-1 uacuteltimo byte cumulativo com ACKExemplobull SendBase-1 = 71y = 73 de modo que destinataacuterio deseja 73+ y gt SendBase de modo que novos dados tecircm ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 65

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 66

TCP cenaacuterios de retransmissatildeo

Hosp A

Seq = 100 20 bytes dados

ACK = 100

tempoTimeout prematuro

Hosp B

Seq = 92 8 bytes dados

ACK =

120

Seq = 92 8 bytes dados

Seq = 92 timeo ut

ACK =

120

Hosp A

Seq = 92 8 bytes dados

ACK = 100

loss

time out

Cenaacuterio de ACK perdido

Hosp B

X

Seq = 92 8 bytes dados

ACK =

100

tempo

Seq = 92 timeo utSendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 67

Host A

Seq = 92 8 bytes dados

ACK = 100

perda

time out

Cenaacuterio ACK cumulativo

Host B

X

Seq = 100 20 bytes dados

ACK =

120

tempo

SendBase = 120

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 68

TCP geraccedilatildeo de ACK [RFC 1122 RFC 2581]

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 69

Retransmissatildeo raacutepida

periacuteodo de timeout relativamente grande longo atraso antes de

reenviar pacote perdido detecta segmentos

perdidos por meio de ACKs duplicados remetente geralmente

envia muitos segmentos um apoacutes o outro

se segmento for perdido provavelmente haveraacute muitos ACKs duplicados para esse segmento

se remetente recebe 3 ACKs para os mesmos dados ele supotildee que segmento apoacutes dados com ACK foi perdido retransmissatildeo raacutepida

reenvia segmento antes que o temporizador expire

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 70

Hosp A

timeout

Hosp B

tempo

X

reenvia seq X2

seq x1seq x2seq x3seq x4seq x5

ACK x1

ACK x1ACK x1ACK x1

ACKsduplicadostrecircs vezes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 71

event ACK received with ACK field value of y if (y gt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else duplicate ACK for already ACKed segment increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) resend segment with sequence number y

Algoritmo de retransmissatildeo raacutepida

ACK duplicado parasegmento jaacute com ACK

retransmissatildeo raacutepida

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 72

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 73

Controle de fluxo TCP

lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo

serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora

processo da aplicaccedilatildeo pode ser lento na leitura do buffer

remetente natildeo estouraraacute buffer do destinataacuterio

transmitindo muitos dados muito rapidamente

controle de fluxo

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 74

Controle de fluxo TCP como funciona

(suponha que destinataacuterio TCP descarte segmentos fora de ordem)

espaccedilo de buffer natildeo usado = rwnd

= RcvBuffer-[LastByteRcvd - LastByteRead]

destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento

remetente limita de bytes com ACKa rwnd garante que buffer do

destinataacuterio natildeo estoura

rwndRcvBuffer

datagramasIP

dados TCP(no buffer)

espaccedilode buffer

(atualmente)natildeo usado

processo daaplicaccedilatildeo

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 75

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 76

Gerenciamento da conexatildeo TCP

lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados

inicializa variaacuteveis TCP s seq buffers informaccedilatildeo de

controle de fluxo (p e RcvWindow)

cliente inicia a conexatildeo Socket clientSocket = new

Socket(hostnameport ) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

apresentaccedilatildeo de 3 vias

etapa 1 hosp cliente envia segmento SYN do TCP ao servidor especifica seq inicial sem dados

etapa 2 hosp servidor recebe SYN responde com segmento SYNACK servidor aloca buffers especifica seq inicial do

servidoretapa 3 cliente recebe SYNACK

responde com segmento ACK que pode conter dados

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 77

fechando uma conexatildeocliente fecha socket

clientSocketclose()

etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor

etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 78

etapa 3 cliente recebe FIN responde com ACK

entra em ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

etapa 4 servidor recebe ACK - conexatildeo fechada

Nota Com pequena modificaccedilatildeo pode tratar de FINs simultacircneos

cliente

FIN

servidor

ACK

ACK

FIN

fechado

fechando

fechado

fechado

espera tem

p orizada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 79

ciclo de vida docliente TCP

ciclo de vida doservidor TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 80

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 81

Princiacutepios de controle de congestionamento

Congestionamento informalmente ldquomuitas fontes enviando muitos

dados muito raacutepido para a rede tratarrdquo diferente de controle de fluxo manifestaccedilotildees pacotes perdidos (estouro de buffer nos

roteadores) longos atrasos (enfileiramento nos buffers do

roteador) um dos maiores problemas da rede

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 82

Causascustos do congestionamento cenaacuterio 1

dois remetentes dois destinataacuterios

um roteador infinitos buffers

sem retransmissatildeo

grandes atrasos quando congestionado

vazatildeo maacutexima alcanccedilaacutevel

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 83

Causascustos docongestionamento cenaacuterio 2

um roteador buffers finitos retransmissatildeo do pacote perdido pelo remetente

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 84

sempre (vazatildeo) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda retransmissatildeo do pacote adiado (natildeo pedido) torna maior

(que o caso perfeito ) para o mesmo

λin

λout

=

λin

λout

gt

λin

λout

ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias

do pacote

R2

R2λin

λout

b

R2

R2λin

λou

t

a

R2

R2λin

λou

t

c

R4

R3

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 85

Causascustos do congestionamento cenaacuterio 3 quatro remetentes caminhos com vaacuterios saltos timeoutretransmissatildeo

λin

P O que acontece quando e aumentam λ

in

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 86

outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade

de transmissatildeo ldquoupstreamrdquo usada para esse pacote foi desperdiccedilada

Host A

Host B

λo

u

t

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 87

Teacutecnicas para controle de congestionamento

controle de congestionamento fim a fim

nenhum feedback expliacutecito da rede

congestionamento deduzido da perda e atraso observados do sistema final

teacutecnica tomada pelo TCP

controle de congestionamento assistido pela rede

roteadores oferecem feedback aos sistemas finais uacutenico bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita que o remetente deve enviar no enlace de saiacuteda

duas teacutecnicas amplas para controle de congestionamento

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 88

Estudo de caso controle de congestionamento ATM ABR

ABR taxa de bit disponiacutevel

ldquoserviccedilo elaacutesticordquo se caminho do remetente

ldquosobrecarregadordquo remetente deve usar

largura de banda disponiacutevel

se caminho do remetente congestionado remetente sufocado agrave

taxa miacutenima garantida

ceacutelulas RM (gerenciamento de recursos)

enviadas pelo remetente intercaladas com ceacutelulas de dados

bits na ceacutelula RM definida por comutadores (ldquoassistido pela rederdquo) bit NI sem aumento na taxa

(congestionamento leve) bit CI indicaccedilatildeo de

congestionamento ceacutelulas RM retornadas ao remetente

pelo destinataacuterio com bits intactos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 89

campo ER (explicit rate) de 2 bytes na ceacutelula RM comutador congestionado pode reduzir valor de ER na ceacutelula taxa de envio do remetente eacute taxa maacutexima admissiacutevel no caminho

bit EFCI nas ceacutelulas de dados defina como 1 no comutador congestionado se a ceacutelula de dados anterior agrave ceacutelula RM tiver EFCI definido

remetente define bit CI na ceacutelula RM retornada

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 90

Capiacutetulo 3 Esboccedilo

31 Serviccedilos da camada de transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte natildeo orientado para conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 Transporte orientado para conexatildeo TCP estrutura de segmento transferecircncia confiaacutevel de

dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 91

Controle de congestionamento TCP busca por largura de banda ldquoprocura por largura de bandardquo aumenta taxa de

transmissatildeo no recebimento do ACK ateacute por fim ocorrer perda depois diminui taxa de transmissatildeo continua a aumentar no ACK diminui na perda (pois largura de

banda disponiacutevel estaacute mudando dependendo de outras conexotildees na rede) ACKs sendo recebidos

de modo que aumenta taxa

X

X

XX

X perda e diminuiccedilatildeo de taxa

taxa de emissatildeo

tempo

P Com que velocidade aumentardiminuir detalhes a seguir

comportamentoldquodente de serrardquo

do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 92

Controle de congestionamento TCP detalhes

remetente limita taxa limitando nuacutemero de bytes sem ACK ldquona pipelinerdquo

cwnd difere de rwnd (como por quecirc) remetente limitado por min(cwndrwnd)

aproximadamente

cwnd eacute dinacircmico funccedilatildeo do congestionamento de rede percebido

taxa = cwnd

RTT bytesseg

LastByteSent-LastByteAcked le cwnd

bytescwnd

RTT

ACK(s)

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 93

Controle de congestionamento TCP mais detalhesevento de perda de segmento

reduzindo cwnd timeout sem resposta do

destinataacuterio corta cwnd para 1

3 ACKs duplicados pelo menos alguns segmentos passando (lembre-se da retransmissatildeo raacutepida) corta cwnd pela metade

menos agressivamente do que no timeout

ACK recebido aumenta cwnd

fase de partida lenta aumento exponencialmente

raacutepido (apesar do nome) no iniacutecio da conexatildeo ou apoacutes o timeout

prevenccedilatildeo de congestionamento aumento linear

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 94

Partida lenta do TCP quando conexatildeo comeccedila cwnd = 1

MSS exemplo MSS = 500 bytes amp

RTT = 200 ms taxa inicial = 20 kbps

largura de banda disponiacutevel pode ser gtgt MSSRTT desejaacutevel subir rapidamente

para taxa respeitaacutevel aumenta taxa exponencialmente ateacute

o primeiro evento de perda ou quando o patamar eacute alcanccedilado cwnd duplo a cada RTT feito incrementando cwnd por 1

para cada ACK recebido

Hosp A

um segmentoRTT

Hosp B

tempo

dois segmentos

quatro segmentos

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 95

Transiccedilatildeo dentrofora da partida raacutepidassthresh patamar de cwnd mantido pelo TCP um evento de perda define ssthresh como cwnd2

lembre-se (metade) da taxa TCP quando ocorreu perda de congestionamento

quando transiccedilatildeo de cwnd gt = ssthresh da partida lenta para fase de prevenccedilatildeo de congestionamento

partidalenta timeout

ssthresh = cwnd2cwnd = 1 MSS

dupACKcount = 0retransmite segmento que faltatimeout

ssthresh = cwnd2 cwnd = 1 MSS

dupACKcount = 0retransmite segmento que falta

Λcwnd gt ssthresh

dupACKcount++

duplicate ACK

Λcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0 prevenccedilatildeo de

congestionamento

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmento(s) como permitido

new ACK

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 96

TCP prevenccedilatildeo de congestionamento quando cwnd gt ssthresh

cresce cwnd de forma linear aumenta cwnd em 1 MSS

por RTT aborda possiacutevel

congestionamento mais lento que na partida lenta

implementaccedilatildeo cwnd = cwnd + MSScwnd para cada ACK recebido

ACKs aumenta cwnd em 1 MSS por RTT aumento aditivo

perda corta cwnd ao meio (perda sem timeout detectado) diminuiccedilatildeo multiplicativa

AIMD

AIMD Additive IncreaseMultiplicative Decrease

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 97

FSM do controle decongestionamento TCP visatildeo geral

partidalenta

prevenccedilatildeode cong

recupraacutepida

cwnd gt ssthresh

perdatimeout

perdatimeout

novo ACK perda3dupACK

perda3dupACK

perdatimeout

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 98

FSM do controle de congestionamento TCP detalhes

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 99

Tipos populares de TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 100

Resumo controle decongestionamento TCP quando cwnd lt ssthresh remetente na fase de

partida lenta janela cresce exponencialmente

quando cwnd gt = ssthresh remetente estaacute na fase de prevenccedilatildeo de congestionamento janela cresce linearmente

quando ocorre o ACK duplicado triplo ssthresh definido como cwnd2 cwnd definido como ~ssthresh

quando ocorre o timeout ssthresh definido como cwnd2 cwnd definido como 1 MSS

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 101

Vazatildeo do TCP

P Qual eacute a vazatildeo meacutedia do TCP como funccedilatildeo do tamanho da janela RTT ignorando partida lenta

seja W o tamanho da janela quando ocorre a perda quando janela eacute W a vazatildeo eacute WRTT logo apoacutes perda janela cai para W2

vazatildeo para W2RTT apoacutes a vazatildeo 075 WRTT

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 102

Futuros do TCP TCP sobre pipes ldquolongos gordosrdquo exemplo segmentos de 1500 bytes RTT de

100 ms deseja vazatildeo de 10 Gbps exige tamanho de janela W = 83333 segmentos

no ar vazatildeo em termos da taxa de perda

L = 2 10-10 Uau novas versotildees do TCP para alta velocidade

122sdotMSSRTT radicL

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 103

objetivo da equidade se K sessotildees TCP compartilharem o mesmo enlace de gargalo da largura de banda R cada uma deve ter uma taxa meacutedia de RK

conexatildeo TCP 1

capacidade degargalo doroteador Rconexatildeo

TCP 2

Equidade do TCP

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 104

Por que o TCP eacute justo

duas sessotildees concorrentes aumento aditivo daacute inclinaccedilatildeo 1 pois vazatildeo aumenta diminuiccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento de largura de banda igual

Vazatildeo da conexatildeo 1

Vazatilde o da c onexatildeo 2

prevenccedilatildeo de cong aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congestionamento aumento aditivoperda diminui janela por fator de 2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 105

Equidade (mais)

equidade e UDP aplicaccedilotildees de multimiacutedia

normalmente natildeo usam TCP natildeo desejam que a taxa

seja sufocada pelo controle de congestionamento

em vez disso use UDP envia aacuteudioviacutedeo em

taxa constante tolera perdas de pacotes

qquidade e conexotildees TCP paralelas

nada impede que a aplicaccedilatildeo abra conexotildees paralelas entre 2 hospedeiros

navegadores Web fazem isso

exemplo enlace de taxa R admitindo 9 conexotildees nova aplicaccedilatildeo solicita 1 TCP

recebe taxa R10 nova aplicaccedilatildeo solicita 11

TCPs recebe R2

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106

copy 2010 Pearson Prentice Hall Todos os direitos reservadosslide 106

Capiacutetulo 3 Resumo princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia de dados

confiaacutevel controle de fluxo controle de

congestionamento instacircncia e implementaccedilatildeo na

Internet UDP TCP

Em seguida saindo da ldquobordardquo da

rede (camada de transportes da aplicaccedilatildeo)

no ldquonuacutecleordquo da rede

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106