Upload
kiona
View
40
Download
0
Embed Size (px)
DESCRIPTION
Metas do capítulo: entender os princípios atrás dos serviços da camada de transporte: multiplexação/ demultiplexação transferência confiável de dados controle de fluxo controle de congestionamento . Capítulo 3: Camada de Transporte. - PowerPoint PPT Presentation
Citation preview
Capiacutetulo 3 Camada de TransporteMetas do capiacutetulo entender os
princiacutepios atraacutes dos serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia
confiaacutevel de dados controle de fluxo controle de
congestionamento
aprender sobre os protocolos da camada de transporte da Internet UDP transporte natildeo
orientado a conexotildees
TCP transporte orientado a conexotildees
Controle de congestionamento do TCP 3 Camada de Transporte 1
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 2
Serviccedilos e protocolos de transporte fornecem comunicaccedilatildeo loacutegica
entre processos de aplicaccedilatildeo executando em diferentes hospedeiros
os protocolos de transporte satildeo executados nos sistemas finais lado transmissor quebra
as mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede
lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo
existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees
Internet TCP e UDP
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 3
Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre
hospedeiros camada de transporte comunicaccedilatildeo loacutegica
entre os processos depende de estende serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas enviando cartas
para 12 crianccedilas processos = crianccedilas mensagens da apl =
cartas nos envelopes hospedeiros = casas protocolo de transporte
= Anna e Bill protocolo da camada de
rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet entrega confiaacutevel
ordenada (TCP) controle de
congestionamento controle de fluxo estabelecimento de
conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo
ordenada UDP extensatildeo sem ldquogordurasrdquo
do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis
garantias de atraso maacuteximo
garantias de largura de banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 2
Serviccedilos e protocolos de transporte fornecem comunicaccedilatildeo loacutegica
entre processos de aplicaccedilatildeo executando em diferentes hospedeiros
os protocolos de transporte satildeo executados nos sistemas finais lado transmissor quebra
as mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede
lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo
existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees
Internet TCP e UDP
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 3
Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre
hospedeiros camada de transporte comunicaccedilatildeo loacutegica
entre os processos depende de estende serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas enviando cartas
para 12 crianccedilas processos = crianccedilas mensagens da apl =
cartas nos envelopes hospedeiros = casas protocolo de transporte
= Anna e Bill protocolo da camada de
rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet entrega confiaacutevel
ordenada (TCP) controle de
congestionamento controle de fluxo estabelecimento de
conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo
ordenada UDP extensatildeo sem ldquogordurasrdquo
do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis
garantias de atraso maacuteximo
garantias de largura de banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Serviccedilos e protocolos de transporte fornecem comunicaccedilatildeo loacutegica
entre processos de aplicaccedilatildeo executando em diferentes hospedeiros
os protocolos de transporte satildeo executados nos sistemas finais lado transmissor quebra
as mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede
lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo
existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees
Internet TCP e UDP
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 3
Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre
hospedeiros camada de transporte comunicaccedilatildeo loacutegica
entre os processos depende de estende serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas enviando cartas
para 12 crianccedilas processos = crianccedilas mensagens da apl =
cartas nos envelopes hospedeiros = casas protocolo de transporte
= Anna e Bill protocolo da camada de
rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet entrega confiaacutevel
ordenada (TCP) controle de
congestionamento controle de fluxo estabelecimento de
conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo
ordenada UDP extensatildeo sem ldquogordurasrdquo
do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis
garantias de atraso maacuteximo
garantias de largura de banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre
hospedeiros camada de transporte comunicaccedilatildeo loacutegica
entre os processos depende de estende serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas enviando cartas
para 12 crianccedilas processos = crianccedilas mensagens da apl =
cartas nos envelopes hospedeiros = casas protocolo de transporte
= Anna e Bill protocolo da camada de
rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet entrega confiaacutevel
ordenada (TCP) controle de
congestionamento controle de fluxo estabelecimento de
conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo
ordenada UDP extensatildeo sem ldquogordurasrdquo
do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis
garantias de atraso maacuteximo
garantias de largura de banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Protocolos da camada de transporte Internet entrega confiaacutevel
ordenada (TCP) controle de
congestionamento controle de fluxo estabelecimento de
conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo
ordenada UDP extensatildeo sem ldquogordurasrdquo
do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis
garantias de atraso maacuteximo
garantias de largura de banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesicarede
enlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Multiplexaccedilatildeodemultiplexaccedilatildeo
Entrega dos segmentos recebidos ao socket correto
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e
do destino cada datagrama transporta 1 segmento da camada
de transporte cada segmento possui nuacutemeros das portas origem e
destino O hospedeiro usa os endereccedilos IP e os nuacutemeros
das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino32 bits
dados daaplicaccedilatildeo
(mensagem)
outros campos do cabeccedilalho
formato de segmento TCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com
nuacutemeros de portaDatagramSocket mySocket1 =
new DatagramSocket(9911)DatagramSocket mySocket2 =
new DatagramSocket(9922) socket UDP
identificado pela dupla
(end IP dest no da porta destino)
Quando o hospedeiro recebe segmento UDP verifica no da porta de
destino no segmento encaminha o segmento
UDP para o socket com aquele no de porta
Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket
3 Camada de Transporte 9
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket
(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocket mySocket2 = new DatagramSocket (9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Demultiplexaccedilatildeo Orientada a Conexotildees
Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta
origem endereccedilo IP destino nuacutemero da porta
destino receptor usa todos os
quatro valores para direcionar o segmento para o socket apropriado
Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute
identificado pela sua proacutepria quaacutedrupla
Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente
teraacute sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos
server IP
address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157host IP
address A
host IP address
C
server IP
address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
threaded server
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
UDP User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo
fora de ordem sem conexatildeo
natildeo haacute ldquosetuprdquo UDP entre remetente receptor
tratamento independente de cada segmento UDP
Uso do UDP aplicaccedilotildees de
streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)
DNS SNMP
transferecircncia confiaacutevel sobre UDP adiciona
confiabilidade na camada de aplicaccedilatildeo
recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
UDP Cabeccedilalho do segmento
porta origem porta dest32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes do
segmento UDPincluindo cabeccedilalho
Por quecirc existe um UDP
elimina estabelecimento de conexatildeo (o que pode causar retardo)
simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
cabeccedilalho de segmento reduzido
Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Soma de Verificaccedilatildeo (checksum) UDP
Transmissor trata conteuacutedo do
segmento como sequumlecircncia de inteiros de 16-bits
campo checksum zerado
checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
transmissor coloca complemento do valor da soma no campo checksum de UDP
Receptor calcula checksum do
segmento recebido verifica se checksum
computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Exemplo do Checksum Internet Note que
Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo 3 Camada de Transporte 18
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas
camadas de transporte enlace
na lista dos 10 toacutepicos mais importantes em redes
caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p
serementregues agrave camada sup do
receptor
udt_send() chamada pela entidade de transporte p
transferir pacotes para o receptor sobre o canal natildeo confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor
do canal
deliver_data() chamada pela entidade de transporte p entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e
receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos
Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor
estado1 estado
2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo
estado eacute determinado
unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de
pacotes FSMs separadas para
transmissor e receptor transmissor envia
dados pelo canal subjacente
receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num
pacote lembre-se checksum UDP pode detectar erros de bits
a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa
explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)
receptor-gttransmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt20 cenaacuterio de erro
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
Transmissor natildeo sabe o que se passou no receptor
natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas transmissor retransmite
o uacuteltimo pacote se ACKNAK chegar com erro
transmissor inclui nuacutemero de sequumlecircncia em cada pacote
receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda resposta do receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamp has_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo
corrompidos duplicou o no de estados
estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptor deve verificar se o pacote recebido eacute uma
duplicata estado indica se no de seq esperado eacute 0 ou 1
nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21
usando apenas ACKs ao inveacutes de NAK receptor envia ACK
para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de
seq do pacote reconhecido ACKs duplicados no transmissor
resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) || isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0
fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt) extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes
P como lidar com perdas transmissor espera ateacute
ter certeza que se perdeu pacote ou ACK e entatildeo retransmite
desvantagens
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
retransmite se nenhum ACK for recebido neste intervalo
se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
receptor deve especificar no de seq do pacote sendo reconhecido
requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1 ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute
sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim
de 15 ms pacote de 1KB
pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
protocolo limita uso dos recursos fiacutesicos
U sender = 00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx
RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Protocolos com paralelismo (pipelining)
Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser
aumentada Armazenamento no transmissor eou no receptor
Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Paralelismo aumento da utilizaccedilatildeo
0008000830
0240RTT
3tx
RL
RLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Protocolos com ParalelismoGo-back-N O transmissor pode ter
ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia apenas acks cumulativos Natildeo reconhece pacote
se houver falha de seq Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletiva
O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo
Receptor envia acks individuais para cada pacote
Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador
estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda natildeo confirmado
Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
GBN FSM estendida para o receptor
receptor simples usa apenas ACK sempre
envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do
expectedseqnum pacotes fora de ordem
descarta (natildeo armazena) -gt receptor natildeo usa buffers
reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo seletiva receptor reconhece individualmente todos os
pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio
para posterior entrega em-ordem agrave camada superior
transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem
ACK janela do transmissatildeo
N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o
pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da
janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
envia ACK(n) fora de ordem armazena em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
ACK(n)senatildeo ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3
receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
transmissatildeo full duplex fluxo de dados bi-direcional
na mesma conexatildeo MSS tamanho maacuteximo de
segmento orientado a conexatildeo
handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados
fluxo controlado receptor natildeo seraacute afogado
pelo transmissor
ponto a ponto 1 transmissor 1 receptor
fluxo de bytes ordenados confiaacutevel
natildeo estruturado em msgs com paralelismo (pipelined)
tam da janela ajustado por controle de fluxo e congestionamento do TCP
buffers de transmissatildeo e recepccedilatildeo
3 Camada de Transporte 54
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Estrutura do segmento TCPURG dados urgentes
(pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeo segmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP nos de seq e ACKsNos de seq
ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs no de seq do proacutex
byte esperado do outro lado
ACK cumulativoP como receptor trata
segmentos fora da ordem R espec do TCP
omissa - deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window size N
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksum
rwndurg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher
valor do temporizador TCP
maior que o RTT note RTT varia
muito curto temporizaccedilatildeo prematura retransmissotildees
desnecessaacuterias muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTT SampleRTT tempo medido
entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees
SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees
recentes natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui
exponencialmente com o tempo valor tiacutepico de a = 0125
3 Camada de Transporte 59
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Exemplo de estimativa do RTT
3 Camada de Transporte 60
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo
grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 61
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 62
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo
confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo
(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para
retransmissotildees
As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados
Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento
3 Camada de Transporte 63
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de
dados do segmento Liga o temporizador se jaacute natildeo estiver ligado
(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
Valor do temporizador calculado anteriormente
Estouro do temporizador Retransmite o segmento que causou o estouro do
temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos
atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos
pendentes (natildeo reconhecidos)
3 Camada de Transporte 64
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Transmis-sorTCP (simplificado)
NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial
repita (sempre) switch(event)
event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)
event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador
event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre
Comentaacuteriobull SendBase-1
uacuteltimo byte reconhecido cumulativamente
Exemplobull SendBase-1 =
71 y= 73 portanto o receptor quer receber 73+
bull y gt SendBase portanto novos dados foram reconhecidos
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 67
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 68
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante
longo longo atraso antes de retransmitir um pacote perdido
Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos
ACKs duplicados
Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida
retransmite o segmento antes que estoure o temporizador
3 Camada de Transporte 69
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 70
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador
else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y
Algoritmo de retransmissatildeo raacutepida
um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida
3 Camada de Transporte 71
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 72
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket
TCP hellip
hellip mais devagar do que o receptor
TCP estaacute entregando
(transmissor estaacute enviando)
do transmissor
3 Camada de Transporte 73
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Controle de Fluxo do TCP como funciona
O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor
Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
muitos sistemas operacionais ajustam RcvBuffer automaticamente
O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 74
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo
36 Princiacutepios de controle de congestionamento
37 Controle de congestionamento no TCP
3 Camada de Transporte 75
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP
dialogam concordam em estabelecer uma conexatildeo (cada um
sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente
tamanho rcvBuffer no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport
number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 76
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
atrasos variaacuteveis mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
reordenaccedilatildeo de mensagens
natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talkOK ESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 77
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmite
req_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
cliente termina
servidoresquece x
teacutermino daconexatildeo x
retransmite
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmite
dados(x+1)
aceitadados(x+1)
escolhe x req_conn(x)ESTAB
ESTAB
acc_conn(x)
cliente termina
ESTAB
escolhe x req_conn(x)ESTAB
acc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 78
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
choose init seq num xsend TCP SYN msg
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
choose init seq num ysend TCP SYNACKmsg acking SYN
ACKbit=1 ACKnum=y+1
received SYNACK(x) indicates server is livesend ACK for SYNACK
this segment may contain client-to-server data received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
estado do cliente
LISTENestado do servidor
LISTEN
3 Camada de Transporte 79
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport
number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
create new socket for communication back to client
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 80
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham
cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1
respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado
com o proacuteprio FIN lida com trocas de FIN simultacircneos
3 Camada de Transporte 81
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1 espera o teacutermino
pelo servidorainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas
pode receber dados
clientSocketclose()
estado do cliente estado do servidor
ESTABESTAB
3 Camada de Transporte 82
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 83
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas
perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes
3 Camada de Transporte 84
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congestionamento cenaacuterio 1
dois remetentes dois receptores
um roteador buffers infinitos
sem retransmissatildeo
capacidade do link de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo congestionada3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido
entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A in dados originais out
in dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
out
in
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas
retransmite se o pacote sabidamente se perdeu
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)
3 Camada de Transporte 89
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
in dados originais
outin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2in
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
3 Camada de Transporte 90
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
out
ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas
coacutepias do pacotebull diminuindo a ldquogoodputrdquo
in
3 Camada de Transporte 91
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com
muacuteltiplos enlaces temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que in e rsquoin crescem
R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
in dados originais out
in dados originais mais dados retransmitidos
3 Camada de Transporte 92
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de
transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 93
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim
natildeo usa realimentaccedilatildeo expliacutecita da rede
congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais
abordagem usada pelo TCP
Controle de congestionamento assistido pela rede
roteadores enviam informaccedilotildees para os sistemas finais bit indicando
congestionamento (SNA DECbit TCPIP ECN ATM)
taxa expliacutecita para envio pelo transmissor
Duas abordagens gerais para controle de congestionamento
3 Camada de Transporte 94
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor
estaacute pouco usado transmissor pode usar
banda disponiacutevel se caminho do transmissor
estiver congestionado transmissor limitado agrave
taxa miacutenima garantida
ceacutelulas RM (resource management)
enviadas pelo transmissor entremeadas com ceacutelulas de dados
bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa
(congestionamento moderado)
bit CI indicaccedilatildeo de congestionamento
ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits
3 Camada de Transporte 95
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Estudo de caso controle de congestionamento do serviccedilo ATM ABR
Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel
entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores
congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM
receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de
transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo
UDP 34 Princiacutepios da transferecircncia confiaacutevel de
dados
35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de
congestionamento 37 Controle de congestionamento no TCP
3 Camada de Transporte 97
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo
(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada
RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade
apoacutes evento de perda
Comportamento de dente de serra testando a largura
de banda
98
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Controle de Congestionamento do TCP detalhes
transmissor limita a transmissatildeo
LastByteSent-LastByteAcked cwnd Aproximadamente
cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Como o transmissor detecta o congestionamento
evento de perda = estouro do temporizador ou 3 acks duplicados
transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda
trecircs mecanismos AIMD partida lenta conservador apoacutes
eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)
taxa = cwnd RTT
Bytesseg
3 Camada de Transporte 99
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1
MSS duplica cwnd a cada RTT atraveacutes do incremento
da cwnd para cada ACK recebido
Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 100
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador
cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na
partida lenta) ateacute um limiar depois cresce linearmente
perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de
entregar alguns segmentos corta cwnd pela metade depois cresce
linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja
por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
TCP mudando da partida lenta para a CAP Quando o
crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeo Limiar (Threshold) variaacutevel
(ssthresh) Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 102
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 103
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da
janela e do RTT Ignore a partida lenta assuma que sempre haja dados a
serem transmitidos Seja W o tamanho da janela (medida em bytes) quando
ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 104
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Futuro do TCP Exemplo segmentos de 1500 bytes RTT de
100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em
tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis
1997]
L = 210-10 Taxa de perdas demasiado baixa
Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSS
221TCP do vazatildeo
3 Camada de Transporte 105
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP
compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo de
capacidade RConexatildeo TCP 2
3 Camada de Transporte 106
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo
aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
evitar congestionamento aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 107
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCP natildeo querem a taxa
estrangulada pelo controle de congestionamento
Preferem usar o UDP Injeta aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)
Equidade e conexotildees TCP em paralelo
nada impede que as apls abram conexotildees paralelas entre 2 hosts
Os browsers Web fazem isto Exemplo canal com taxa R
compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1
TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11
TCPs obteacutem taxa R2
3 Camada de Transporte 108
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109
Capiacutetulo 3 Resumo Princiacutepios por traacutes dos
serviccedilos da camada de transporte multiplexaccedilatildeo
demultiplexaccedilatildeo transferecircncia confiaacutevel de
dados controle de fluxo controle de
congestionamento instanciaccedilatildeo e implementaccedilatildeo
na Internet UDP TCP
Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
entramos no ldquonuacutecleordquoda rede
3 Camada de Transporte 109