Post on 27-Jun-2020
Capiacutetulo 3 Camada de TransporteMetas do capiacutetulor entender os
princiacutepios atraacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia
confiaacutevel de dadosm controle de fluxom controle de
congestionamento
r aprender sobre os protocolos da camada de transporte da Internetm UDP transporte natildeo
orientado a conexotildeesm TCP transporte
orientado a conexotildeesm Controle de
congestionamento do TCP
3 Camada de Transporte 1
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 2
Serviccedilos e protocolos de transporte
r fornecem comunicaccedilatildeo loacutegica entre processos de aplicaccedilatildeo executando em diferentes hospedeiros
r os protocolos de transporte satildeo executados nos sistemas finais m lado transmissor quebra as
mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede
m lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo
r existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildeesm Internet TCP e UDP
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 3
Camadas de Transporte x rede
r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros
r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende
serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas na casa de Ana
enviando cartas para 12 crianccedilas na casa de Bill
r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos
envelopesr protocolo de transporte = Ana
e Bill que demultiplexam para suas crianccedilas
r protocolo da camada de rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet
r entrega confiaacutevel ordenada (TCP)m controle de
congestionamentom controle de fluxom estabelecimento de conexatildeo
(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo
ordenada UDPm extensatildeo sem ldquogordurasrdquo do
ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis
m garantias de atraso maacuteximom garantias de largura de
banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 2
Serviccedilos e protocolos de transporte
r fornecem comunicaccedilatildeo loacutegica entre processos de aplicaccedilatildeo executando em diferentes hospedeiros
r os protocolos de transporte satildeo executados nos sistemas finais m lado transmissor quebra as
mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede
m lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo
r existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildeesm Internet TCP e UDP
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 3
Camadas de Transporte x rede
r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros
r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende
serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas na casa de Ana
enviando cartas para 12 crianccedilas na casa de Bill
r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos
envelopesr protocolo de transporte = Ana
e Bill que demultiplexam para suas crianccedilas
r protocolo da camada de rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet
r entrega confiaacutevel ordenada (TCP)m controle de
congestionamentom controle de fluxom estabelecimento de conexatildeo
(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo
ordenada UDPm extensatildeo sem ldquogordurasrdquo do
ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis
m garantias de atraso maacuteximom garantias de largura de
banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Serviccedilos e protocolos de transporte
r fornecem comunicaccedilatildeo loacutegica entre processos de aplicaccedilatildeo executando em diferentes hospedeiros
r os protocolos de transporte satildeo executados nos sistemas finais m lado transmissor quebra as
mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede
m lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo
r existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildeesm Internet TCP e UDP
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 3
Camadas de Transporte x rede
r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros
r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende
serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas na casa de Ana
enviando cartas para 12 crianccedilas na casa de Bill
r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos
envelopesr protocolo de transporte = Ana
e Bill que demultiplexam para suas crianccedilas
r protocolo da camada de rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet
r entrega confiaacutevel ordenada (TCP)m controle de
congestionamentom controle de fluxom estabelecimento de conexatildeo
(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo
ordenada UDPm extensatildeo sem ldquogordurasrdquo do
ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis
m garantias de atraso maacuteximom garantias de largura de
banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Camadas de Transporte x rede
r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros
r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende
serviccedilos da camada de rede
Analogia domeacutestica12 crianccedilas na casa de Ana
enviando cartas para 12 crianccedilas na casa de Bill
r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos
envelopesr protocolo de transporte = Ana
e Bill que demultiplexam para suas crianccedilas
r protocolo da camada de rede = serviccedilo postal
3 Camada de Transporte 4
Protocolos da camada de transporte Internet
r entrega confiaacutevel ordenada (TCP)m controle de
congestionamentom controle de fluxom estabelecimento de conexatildeo
(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo
ordenada UDPm extensatildeo sem ldquogordurasrdquo do
ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis
m garantias de atraso maacuteximom garantias de largura de
banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Protocolos da camada de transporte Internet
r entrega confiaacutevel ordenada (TCP)m controle de
congestionamentom controle de fluxom estabelecimento de conexatildeo
(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo
ordenada UDPm extensatildeo sem ldquogordurasrdquo do
ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis
m garantias de atraso maacuteximom garantias de largura de
banda miacutenima
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
aplicaccedilatildeotransporte
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
redeenlacefiacutesica
transporte loacutegico fim a fim
3 Camada de Transporte 5
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 6
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Multiplexaccedilatildeodemultiplexaccedilatildeo
Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos
Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)
Multiplexaccedilatildeo no transm
processo
sockettransporte
aplicaccedilatildeo
fiacutesicaenlacerede
P2P1
transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P4transporte
aplicaccedilatildeo
fiacutesicaenlacerede
P3
3 Camada de Transporte 7
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
r computador recebe os datagramas IPm cada datagrama possui
os endereccedilos IP da origem e do destino
m cada datagramatransporta um segmento da camada de transporte
m cada segmento possui nuacutemeros das portas origem e destino
r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado
Como funciona a demultiplexaccedilatildeo
porta origem porta destino
32 bits
dados daaplicaccedilatildeo
(mensagempayload)
outros campos do cabeccedilalho
formato de segmentoTCPUDP
3 Camada de Transporte 8
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui
nuacutemero de porta local ao hostDatagramSocket mySocket1 = new
DatagramSocket(12534)
r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino
3 Camada de Transporte 9
r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de
destino no segmentom encaminha o segmento UDP
para o socket com aquele no de porta
r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
DatagramSocket serverSocket = new DatagramSocket(6428)
transport
application
physicallink
network
P3transport
application
physicallink
network
P1
transport
application
physicallink
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775)
DatagramSocketmySocket2 = new DatagramSocket(9157)
source port 9157dest port 6428
source port 6428dest port 9157
source port dest port
source port dest port
3 Camada de Transporte 10
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Demultiplexaccedilatildeo Orientada a Conexotildees
r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino
r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado
r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado
pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets
diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute
sockets diferentes para cada pedido
3 Camada de Transporte 11
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
transport
application
physicallink
network
P3transport
application
physicallink
P4
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
network
P6P5P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos
server IP address B
3 Camada de Transporte 12
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
transport
application
physicallink
network
P3transport
application
physicallink
transport
application
physicallink
network
P2
source IPport A9157dest IP port B80
source IPport B80dest IPport A9157
host IP address A
host IP address C
server IP address B
network
P3
source IPport C5775dest IPport B80
source IPport C9157dest IPport B80
P4
Servidor com threads
3 Camada de Transporte 13
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 14
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
UDP User Datagram Protocol [RFC 768]
r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo
r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora
de ordemr sem conexatildeo
m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP
m tratamento independente para cada segmento UDP
r Uso do UDPm aplicaccedilotildees de streaming
multimiacutedia (tolerante a perdas sensiacutevel a taxas)
m DNSm SNMP
r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na
camada de aplicaccedilatildeom recuperaccedilatildeo de erros
especiacutefica da aplicaccedilatildeo
3 Camada de Transporte 15
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
UDP Cabeccedilalho do segmento
porta origem porta dest
32 bits
Dados de aplicaccedilatildeo
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento em bytes dosegmento UDP
incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de
conexatildeo (que pode causar retardo)
r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor
r cabeccedilalho de segmento reduzido
r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)
3 Camada de Transporte 16
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Soma de Verificaccedilatildeo (checksum)UDP
Transmissorr trata conteuacutedo do
segmento como sequecircncia de inteiros de 16-bits
r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento
r transmissor coloca complemento do valor da soma no campo checksumdo UDP
Receptorr calcula checksum do
segmento recebidor verifica se o checksum
calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro
detectado Mas ainda pode ter erros Veja depois hellip
Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido
3 Camada de Transporte 17
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Exemplo do Checksum Internetr Exemplo adiccedilatildeo de dois inteiros de 16-bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
transbordo
somasoma de
verificaccedilatildeo
3 Camada de Transporte 18
Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 19
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas
camadas de transporte e de enlace
r na lista dos 10 toacutepicos mais importantes em redes
r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)
3 Camada de Transporte 20
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Transferecircncia confiaacutevel o ponto de partida
ladotransmissor
ladoreceptor
rdt_send() chamada de cima (ex pela apl) Passa dados p serem
entregues agrave camada sup do receptor
udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo
confiaacutevel
rdt_rcv() chamada quando pacote chega no lado receptor do
canal
deliver_data() chamada pelordt para entregar dados p camada
superior
3 Camada de Transporte 21
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor
de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados
m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os
protocolos transmissor e receptor
estado1
estado2
evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado
estado neste ldquoestadordquo o proacuteximo estado eacute
determinado unicamente pelo proacuteximo evento
eventoaccedilotildees
3 Camada de Transporte 22
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes
r FSMs separadas para transmissor e receptorm transmissor envia dados
pelo canal subjacentem receptor lecirc os dados do
canal subjacente
3 Camada de Transporte 23
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
Como as pessoas recuperam ldquoerrosrdquodurante uma conversa
3 Camada de Transporte 24
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote
m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros
m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente
m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros
m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)
m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do
receptor para o transmissor
3 Camada de Transporte 25
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt20 especificaccedilatildeo da FSM
3 Camada de Transporte 26
Animaccedilatildeo no slide
seguinte
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt20 operaccedilatildeo com ausecircncia de erros
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 27
transmissor
receptor
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt20 cenaacuterio de erro
Wait for call from above
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from
below
rdt_send(data)
L
3 Camada de Transporte 28
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt20 tem uma falha fatalO que acontece se o
ACKNAK for corrompido
r Transmissor natildeo sabe o que se passou no receptor
r natildeo pode apenas retransmitir possibilidade de pacotes duplicados
Lidando c duplicatas r transmissor retransmite o
uacuteltimo pacote se ACKNAK chegar com erro
r transmissor inclui nuacutemero de sequecircncia em cada pacote
r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados
Transmissor envia um pacotee entatildeo aguarda respostado receptor
pare e espera
3 Camada de Transporte 29
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt21 transmissor trata ACKNAKs corrompidos
3 Camada de Transporte 30
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt21 receptor trata ACKNAKs corrompidos
Esperar 0 de baixo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Esperar 1 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
3 Camada de Transporte 31
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt21 discussatildeo
Transmissorr no de seq no pacoter bastam dois nos de
seq (01) Por quecircr deve verificar se
ACKNAK recebidos estatildeo corrompidos
r duplicou o no de estadosm estado deve ldquolembrarrdquo
se pacote ldquoesperadordquo deve ter no de seq 0 ou 1
Receptorr deve verificar se o
pacote recebido eacute uma duplicatam estado indica se no de
seq esperado eacute 0 ou 1r nota receptor natildeo tem
como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor
3 Camada de Transporte 32
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt22 um protocolo sem NAKs
r mesma funcionalidade do rdt21 usando apenas ACKs
r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq
do pacote reconhecidor ACKs duplicados no transmissor resultam
na mesma accedilatildeo do NAK retransmissatildeo do pacote atual
3 Camada de Transporte 33
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt22 fragmentos do transmissor e receptor
aguarda chamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguarda ACK
0fragmento FSMdo transmissor
aguarda0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento FSM
do receptor
L
3 Camada de Transporte 34
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt30 canais com erros e perdas
Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq
ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes
Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK
r retransmite se nenhum ACK for recebido neste intervalo
r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute
duplicata mas uso de no de seq jaacute cuida disto
m receptor deve especificar no de seq do pacote sendo reconhecido
r requer temporizador3 Camada de Transporte 35
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Transmissor rdt30
3 Camada de Transporte 36
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt30 em accedilatildeo
3 Camada de Transporte 37
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt30 em accedilatildeo
rcv pkt1send ack1
(detect duplicate)
pkt1
Remetente Destinataacuterio
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) retransmissatildeo prematura
pkt1timeout
resend pkt1
ack1
send ack1
ignorarcv ack1
ack1send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
3 Camada de Transporte 38
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Desempenho do rdt30
r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15
ms pacote de 8000 bits
r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps
r protocolo limita uso dos recursos fiacutesicos
U sender =
00088 30008
= 000027 microseconds
L R RTT + L R
=
dosmicrosegun8bps10bits8000
9 ===RLdtrans
3 Camada de Transporte 39
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
rdt30 operaccedilatildeo pare e espere
000270008300080
RTT
tx ==+
=RL
RLU
3 Camada de Transporte 40
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios
pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor
r Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
3 Camada de Transporte 41
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Paralelismo aumento da utilizaccedilatildeo
000810008300240
RTT3
tx ==+
acute=
RLRLU
Aumenta a utilizaccedilatildeopor um fator de 3
3 Camada de Transporte 42
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se
houver falha de seqr Transmissor possui um
temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador
estourar retransmite todos os pacotes ainda natildeo reconhecidos
Retransmissatildeo seletivar O transmissor pode ter ateacute N
pacotes natildeo reconhecidos no ldquotubordquo
r Receptor envia acksindividuais para cada pacote
r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador
estourar retransmite apenas o pacote correspondente
3 Camada de Transporte 43
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo
reconhecidos
r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)
r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes
pendentes3 Camada de Transporte 44
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
GBN FSM estendida para o transmissor
If getacknum(rcvpkt)gt=base
3 Camada de Transporte 45
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
GBN FSM estendida para o receptor
receptor simplesr usa apenas ACK sempre envia
ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do
expectedseqnum
r pacotes fora de ordem m descarta (natildeo armazena) -gt
receptor natildeo usa buffersm reconhece pacote com o
nuacutemero de sequecircncia mais alto em-ordem
3 Camada de Transporte 46
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
send pkt0send pkt1send pkt2send pkt3
(wait)
sender receiver
receive pkt0 send ack0receive pkt1 send ack1
receive pkt3 discard (re)send ack1rcv ack0 send pkt4
rcv ack1 send pkt5
timeoutsend pkt2send pkt3send pkt4send pkt5
Xloss
receive pkt4 discard (re)send ack1
receive pkt5 discard (re)send ack1
rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
3 Camada de Transporte 47
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo seletiva
r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para
posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais
um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK
r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes
enviados mas ainda natildeo reconhecidos
3 Camada de Transporte 48
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo seletiva janelas do transmissor e do receptor
reconhecido
3 Camada de Transporte 49
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo seletiva
dados de cimar se proacutex no de seq (n)
disponiacutevel estiver na janela envia o pacote e liga temporizador(n)
estouro do temporizador(n)r reenvia pacote n reinicia
temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como
ldquorecebidordquor se n for menor pacote natildeo
reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido
pacote n em [rcvbase rcvbase+N-1]
r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb
entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido
pacote n em [rcvbase-Nrcvbase-1]
r ACK(n)senatildeor ignora
receptortransmissor
3 Camada de Transporte 50
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo seletiva em accedilatildeo
3 Camada de Transporte 51
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3
r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios
r incorretamente passa dados duplicados como novos em (a)
P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela
3 Camada de Transporte 52
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 53
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
r transmissatildeo full duplexm fluxo de dados bi-direcional
na mesma conexatildeom MSS tamanho maacuteximo de
segmentor orientado a conexatildeo
m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados
r fluxo controladom receptor natildeo seraacute afogado
pelo transmissor
r ponto a pontom um transmissor um receptor
r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs
r com paralelismo (pipelined)m tam da janela ajustado por
controle de fluxo e congestionamento do TCP
3 Camada de Transporte 54
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Estrutura do segmento TCP
URG dados urgentes (pouco usado)
ACK campo de ACKeacute vaacutelido
PSH produz envio dedados (pouco usado)
RST SYN FINestabelec de conexatildeo
(comandos de criaccedilatildeo e teacutermino)
Internetchecksum
(como no UDP)
nuacutemero de bytes receptor estaacutepronto para aceitar
contagem porbytes de dados(natildeosegmentos)
3 Camada de Transporte 55
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP nos de seq e ACKs
Nos de seqm ldquonuacutemerordquodentro do
fluxo de bytes do primeiro byte de dados do segmento
ACKsm no de seq do proacutex byte
esperado do outro ladom ACK cumulativo
P como receptor trata segmentos fora da ordemm R espec do TCP omissa
- deixado ao implementador
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento que chega ao ldquotransmissorrdquo
A
sent ACKed
sent not-yet ACKed(ldquoin-flightrdquo)
usablebut not yet sent
not usable
window sizeN
sender sequence number space
source port dest port
sequence numberacknowledgement number
checksumrwnd
urg pointer
segmento de saiacuteda do ldquotransmissorrdquo
3 Camada de Transporte 56
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP nos de seq e ACKs
cenaacuterio telnet simples
3 Camada de Transporte 57
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo
P como escolher o valor do temporizador TCP
r maior que o RTTm mas o RTT varia
r muito curto temporizaccedilatildeo prematuram retransmissotildees
desnecessaacuteriasr muito longo reaccedilatildeo
demorada agrave perda de segmentos
P como estimar RTTr SampleRTT tempo medido entre
a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees
r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes
natildeo apenas o uacuteltimo SampleRTT obtido
3 Camada de Transporte 58
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT
r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o
tempor valor tiacutepico de a = 0125
3 Camada de Transporte 59
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo
m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila
r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT
r Entatildeo ajusta o temporizador para
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-b) DevRTT +b|SampleRTT - EstimatedRTT|
(valor tiacutepico de b = 025)
3 Camada de Transporte 60
RTT estimado ldquomargem de seguranccedilardquo
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 61
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo
rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos
em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico
temporizador para retransmissotildees
r As retransmissotildees satildeo disparadas porm estouros de
temporizaccedilatildeom acks duplicados
r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de
fluxo e de congestionamento
3 Camada de Transporte 62
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Eventos do transmissor TCP
Dados recebidos da aplicaccedilatildeor Cria segmento com no de
sequecircncia (nseq)r nseq eacute o nuacutemero de
sequecircncia do primeiro byte de dados do segmento
r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)
r Valor do temporizador calculado anteriormente
Estouro do temporizadorr Retransmite o segmento
que causou o estouro do temporizador
r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos
ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre
o que foi reconhecidom religa o temporizador se
ainda houver segmentos pendentes (natildeo reconhecidos)
3 Camada de Transporte 63
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Transmissor TCP (simplificado)
3 Camada de Transporte 64
waitfor
event
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
L
create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)
start timer
data received from application above
retransmit not-yet-acked segment with smallest seq
start timer
timeout
if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)
start timerelse stop timer
ACK received with ACK field value y
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP cenaacuterios de retransmissatildeo
Cenaacuterio com perdado ACK
Temporizaccedilatildeo prematuraACKs cumulativos
Religatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
Religatemporizaccedilatildeo
Desligatemporizaccedilatildeo
3 Camada de Transporte 65
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP cenaacuterios de retransmissatildeo (mais)
Cenaacuterio de ACK cumulativo
Desligatemporizaccedilatildeo
3 Camada de Transporte 66
Seq=120 15 bytes of data
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
Evento no Receptor
chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos
chegada de segmento em ordemsem lacunasum ACK retardado pendente
chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Accedilatildeo do Receptor TCP
ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK
envia imediatamente um uacutenicoACK cumulativo
envia ACK duplicado indicando no de seqdo proacuteximo byte esperado
ACK imediato se segmento comeccedila no iniacutecio da lacuna
3 Camada de Transporte 67
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo raacutepida do TCP
r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de
retransmitir um pacote perdido
r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor
normalmente envia diversos segmentos
m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados
3 Camada de Transporte 68
se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o
segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador
retx raacutepida do TCP
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados
X
Host BHost A
Seq=92 8 bytes of data
ACK=100
ACK=100
ACK=100ACK=100
Seq=100 20 bytes of data
Seq=100 20 bytes of data
timeo
ut
3 Camada de Transporte 69
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 70
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Controle de Fluxo do TCP
o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente
Controle de fluxo
processode aplicaccedilatildeo
Buffers de recepccedilatildeo do socket TCP
TCPcode
IPcode
aplicaccedilatildeoSO
pilha de protocolos no receptor
a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip
hellip mais devagar do que o receptor TCP
estaacute entregando (transmissor estaacute
enviando)
do transmissor
3 Camada de Transporte 71
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Controle de Fluxo do TCP como funciona
r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute
configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)
m muitos sistemas operacionais ajustam RcvBuffer automaticamente
r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido
r Garante que o buffer do receptor natildeo transbordaraacute
dados armazenados
espaccedilo livrerwnd
RcvBuffer
carga dos segmentos TCP
para processo de aplicaccedilatildeo
armazenamento no lado do receptor
3 Camada de Transporte 72
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de
dadosm controle de fluxom gerenciamento da conexatildeo
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 73
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo
que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor
servidor-p-clientetamanho rcvBuffer
no servidorcliente
aplicaccedilatildeo
network
Socket clientSocket = newSocket(hostnameport number)
Socket connectionSocket = welcomeSocketaccept()
3 Camada de Transporte 74
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Concordando em estabelecer uma conexatildeo
P a apresentaccedilatildeo em duas vias sempre funciona em redes
r atrasos variaacuteveisr mensagens retransmitidas
(ex req_conn(x)) devido agrave perda de mensagem
r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado
Apresentaccedilatildeo de duas vias(2-way handshake)
Letrsquos talk
OKESTAB
ESTAB
choose x req_conn(x)ESTAB
ESTABacc_conn(x)
3 Camada de Transporte 75
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Concordando em estabelecer uma conexatildeo
cenaacuterios de falha da apresentaccedilatildeo de duas vias
retransmitereq_conn(x)
ESTAB
req_conn(x)
conexatildeo aberta pela metade(sem cliente)
clientetermina
servidoresquece x
teacutermino daconexatildeo x
retransmitereq_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmitedados(x+1)
aceitadados(x+1)
escolhe xreq_conn(x)
ESTAB
ESTAB
acc_conn(x)
clientetermina
ESTAB
escolhe xreq_conn(x)
ESTABacc_conn(x)
data(x+1) aceitadados(x+1)
teacutermino daconexatildeo x servidor
esquece x
3 Camada de Transporte 76
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Apresentaccedilatildeo de trecircs vias do TCP
SYNbit=1 Seq=x
escolhe no seq inicial xenvia msg TCP SYN
ESTAB
SYNbit=1 Seq=yACKbit=1 ACKnum=x+1
escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN
ACKbit=1 ACKnum=y+1
SYNACK(x) recebido Indica que o servidor estaacute
ativoenvia ACK para SYNACK
este segmento pode conterdados do cliente para
servidorACK(y) recebidoindica que o cliente estaacute ativo
SYNSENT
ESTAB
SYN RCVD
estado do clienteLISTEN
estado do servidorLISTEN
3 Camada de Transporte 77
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
closed
L
listen
SYNrcvd
SYNsent
ESTAB
Socket clientSocket = newSocket(hostnameport number)
SYN(seq=x)
Socket connectionSocket = welcomeSocketaccept()
SYN(x)SYNACK(seq=yACKnum=x+1)
cria novo socket paracomunicaccedilatildeo com o cliente
SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)
L
Apresentaccedilatildeo de trecircs vias do TCP
3 Camada de Transporte 78
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP Encerrando uma conexatildeo
r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1
r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o
proacuteprio FINr lida com trocas de FIN simultacircneos
3 Camada de Transporte 79
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP Encerrando uma conexatildeo
FIN_WAIT_2
CLOSE_WAIT
FINbit=1 seq=y
ACKbit=1 ACKnum=y+1
ACKbit=1 ACKnum=x+1espera o teacutermino
pelo servidor
ainda pode enviar dados
natildeo pode maisenviar dados
LAST_ACK
CLOSED
TIMED_WAIT
espera temporizadapor 2tempo maacuteximo de vida do segmento
CLOSED
FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode
receber dados
clientSocketclose()
estado do cliente estado do servidorESTABESTAB
3 Camada de Transporte 80
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 81
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas
m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)
m longos atrasos (enfileiramento nos buffers dos roteadores)
r um dos 10 problemas mais importantes em redes
3 Camada de Transporte 82
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congestionamento cenaacuterio 1
r dois remetentes dois receptores
r um roteador buffers infinitos
r sem retransmissatildeor capacidade do link
de saiacuteda R
Vazatildeo maacutexima por conexatildeo R2
Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido
m entrada camada apl = saiacuteda camada apl lin = lout
m entrada camada transp inclui retransmissotildees lrsquoin ge lout
Buffers de enlace de saiacuteda finitos compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
3 Camada de Transporte 84
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas
quando houver buffer disponiacutevel no roteador
Buffers de enlace de saiacuteda finitos
compartilhados
Hospedeiro A lin dados originais lout
lin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro C
Hospedeiro D
R2
R2
l out
lin
coacutepia
espaccedilo livre em buffer
3 Camada de Transporte 85
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
coacutepia
sem espaccedilo em buffer
3 Camada de Transporte 86
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite
se o pacote sabidamente se perdeu
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)
3 Camada de Transporte 87
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
A
lin dados originais
loutlin dados originais mais dados retransmitidos
Hospedeiro B
Hospedeiro D
espaccedilo livre em buffer
timeout
R2
R2lin
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
3 Camada de Transporte 88
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos
descartados no roteador devido a buffers cheios
r retransmissatildeo prematura envio de duas coacutepias ambas entregues
R2
R2
l out
ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues
ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias
do pacotebull diminuindo a ldquogoodputrdquo
lin
3 Camada de Transporte 89
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos
enlacesr temporizaccedilatildeo
retransmissatildeo
P o que acontece agrave medida que lin e lrsquoin crescem
R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0
Buffers de enlace de saiacuteda finitos compartilhados
lin dados originais lout
lin dados originais mais dados retransmitidos
3 Camada de Transporte 90
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Causascustos de congestionamento cenaacuterio 3
Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo
jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada
R2
3 Camada de Transporte 91
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Conteuacutedo do Capiacutetulo 3
r 31 Introduccedilatildeo e serviccedilos de camada de transporte
r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
r 33 Transporte natildeo orientado para conexatildeo UDP
r 34 Princiacutepios da transferecircncia confiaacutevel de dados
r 35 Transporte orientado para conexatildeo TCP
r 36 Princiacutepios de controle de congestionamento
r 37 Controle de congestionamento no TCP
3 Camada de Transporte 92
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa
r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT
ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes
evento de perda
Comportamento de dente de serra
testando a largura de banda
93
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Controle de Congestionamento do TCP detalhes
r transmissor limita a transmissatildeoLastByteSent-LastByteAcked
pound cwnd
r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede
Taxa de transmissatildeo do TCPr aproximadamente envia uma
janela (cwnd) espera RTT para os ACKs depois envia mais bytes
3 Camada de Transporte 94
taxa = cwndRTT
bytesseg
last byteACKed sent not-
yet ACKed(ldquoin-
flightrdquo)
last byte sent
cwndsender sequence number space
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1
MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido
r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial
TCP Partida lentaA
um segmento
RTT
B
tempo
dois segmentos
quatro segmentos
3 Camada de Transporte 95
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP detectando reagindo a perdas
r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida
lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO
m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos
m corta cwnd pela metade depois cresce linearmente
r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)
3 Camada de Transporte 96
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
TCP mudando da partida lenta para a CA
P Quando o crescimento exponencial deve mudar para linear
R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda
Implementaccedilatildeor Limiar (Threshold) variaacutevel
(ssthresh) r Com uma perda o limiar
(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda
3 Camada de Transporte 97
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Controle de congestionamento do transmissor TCP
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
Lcwnd gt ssthresh prevenccedilatildeo
decongest
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmite novos segmentos como permitido
novo ACK
dupACKcount++ACK duplicado
recuperaccedilatildeoraacutepida
cwnd = cwnd + MSStransmite novos segmentos como permitido
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmite os segmentos que faltam
dupACKcount == 3
timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam
ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
Novo ACK
partidalenta
timeoutssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmite os segmentos que faltam
cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido
novo ACKdupACKcount++ACK duplicado
Lcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NovoACK
NovoACK
NovoACK
3 Camada de Transporte 98
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Vazatildeo (throughput) do TCP
r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem
transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma
perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT
W
W2
3 Camada de Transporte 99
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms
deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em
tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]
para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa
r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades
LRTTMSStimes
=221TCP do vazatildeo
3 Camada de Transporte 100
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Equidade (Fairness) do TCP
objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK
Conexatildeo TCP 1
Roteadorcom gargalo decapacidade RConexatildeo
TCP 2
3 Camada de Transporte 101
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente
R
R
compartilhamento igual da banda
Vazatildeo da conexatildeo 1
Vazatilde
o da
con
exatildeo
2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2
3 Camada de Transporte 102
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia
frequentemente natildeo usam TCPm natildeo querem a taxa
estrangulada pelo controle de congestionamento
r preferem usar o UDPm injetam aacuteudioviacutedeo a
taxas constantes toleram perdas de pacotes
Equidade e conexotildees TCP em paralelo
r nada impede que as apls abram conexotildees paralelas entre 2 hosts
r os browsers Web fazem istor exemplo canal com taxa R
compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP
obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs
obteacutem taxa R2
3 Camada de Transporte 103
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Transport Layer 3-104
controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo
roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o
bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento
Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)
origemaplicaccedilatildeotransporte
redeenlacefiacutesica
destinoaplicaccedilatildeotransporte
redeenlacefiacutesica
ECN=00 ECN=11
ECE=1
datagrama IP
segmento TCP de ACK(nova flag)
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105
Capiacutetulo 3 Resumo
r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo
demultiplexaccedilatildeom transferecircncia confiaacutevel de
dadosm controle de fluxom controle de congestionamento
r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP
Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da
rede (camadas de aplicaccedilatildeo e transporte)
r entramos no ldquonuacutecleordquo da rede
r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle
3 Camada de Transporte 105