Capítulo 3 Camada de transporte - FACOMfaina/BCC_Crs/GBC066-2014-2S/DL/Kurose-Ch03.pdf · slides...
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
-